<?php
namespace app\index\controller;

use think\Config;
use think\Db;

use Redis;
class Index
{
    public function index()
    {
      //phpinfo();die;
      //socket bat启动
      return view('index');
      // return view('index1');
    }

    public function Indexredis()
    {

      $redis = new Redis();
      $redis->connect('127.0.0.1', 6379);
     // $redis->flushAll(); //清空

      //$redis->flushAll();
      // lPush()将一个或多个值插入列表的左侧或头部
      /*echo $redis->lPush('k1','v1');//1
      echo $redis->lPush('k1','v1');//2
      echo $redis->lPush('k1','v1');//3*/
    //  $lp = $redis->lRange('k1',0,-1);
      //var_dump($lp);die;

      $redisdata =  $redis->set('name1','1111');
      $redisdata =  $redis->get('name1');
      //var_dump($redisdata);die;

      //设置redis变量

      $redis->set('mjy','3岁');
      echo $redis->get('mjy');
      echo "</br>";

      $redis->lPush('list','one');
      $redis->lPush('list','two');
      $redis->lPush('list','there');
      
      $list =$redis->lRange('list',0,-1);
     // print_r($list);echo "</br>";

      //从右边在恩增加一个
      $redis->lPush('list','four');
      $listl =$redis->lRange('list',0,-1);
     // print_r($listl);echo "</br>";
    
      //从左侧弹出一个
      $redis->lpop('list');
      $listlpop =$redis->lRange('list',0,-1);
     // print_r($list);echo "</br>";


       //从右边加入一个
      $redis->rPush('list','zone');
      $listrPush =$redis->lRange('list',0,-1);
      //print_r($listrPush);echo "</br>";

       //从右边侧弹出一个
      $redis->rpop('list');
      $listrpop =$redis->lRange('list',0,-1);
     // print_r($listrpop);echo "</br>";


      //截取部分内容
     $ltrimlist= $redis->ltrim('list',0,1);
     // print_r($ltrimlist);echo "</br>";

     /************************************/

     //hash 使用
     echo $redis->hset('hash', 'cat', 'cat');echo '<br>';
     echo $redis->hset('hash', 'cat1', 'cat1');echo '<br>';
     echo $redis->hset('hash','new','13757117660');echo'<br>';
      echo $redis->hset('hash','new1','137571176601');echo'<br>';
     //获取hash中某个key的值
     echo $redis->hget('hash', 'cat');echo '<br>';

     //获取全部
    /* $arr =$redis->hkeys('hash');
     print_r($arr);echo "<br>";*/
     //获取hash中所有的值 顺序是随机的
     $arr = $redis->hvals('hash');
     print_r($arr);echo '<br>';

  

    //获取一个hash中所有的key和value 顺序是随机的
     $arr = $redis->hgetall('hash');
     print_r($arr);echo '<br>';

    //获取hash中key的数量
     echo $redis->hlen('hash');echo '<br>';



   /****************************/
   //Set(集合):

    // 添加一个元素
    echo $redis->sadd('set', 'mhzr');echo '<br>';
    echo $redis->sadd('set', 'redis');echo '<br>';
    echo $redis->sadd('set', 'one');echo '<br>';
    echo $redis->sadd('set', 'two');echo '<br>';
    echo $redis->sadd('set', 'there');echo '<br>';
    // 查看集合中所有的元素
     $set = $redis->smembers('set');
     print_r($set);echo '<br>';

    //删除集合中的某个元素
    var_dump($redis->srem('set','mhzr'));echo '<br>';

     // return view('index');
    }

    //数组循环压入队列中，循环写入对应的建名中
    public function Lpushs(){
      $redis = new Redis();
      $redis->connect('127.0.0.1', 6379);

      $newdata =array('yii','html','think','rdis');
      foreach ($newdata as $k => $v) {
            $redis->lpush('mjy',$v);
             echo $k."号入队成功"."<br/>";

      }
    }
    //弹出队列中的内容 从左边
    public function Lpops(){
      $redis =new Redis();
      $redis->connect('127.0.0.1',6379);
      $value =$redis->lpop('mjy');
       if($value){
            echo "出队的值".$value;
        }else{
            echo "出队完成";
 
        }
    }

    

     //消息队列 入队
    public function rlpush(){
      $redis = new Redis();
      $redis->connect('127.0.0.1', 6379);
      $redis->flushAll();
            $newsum =20;
             for ($i=0; $i<$newsum; $i++) {
              try {
                $redis->lpush('names1',rand(1000,5000));
              } catch (Exception $e) {
                echo $e->getMessage();
              }
             }
    }
  

   //消息队列 出队
   public function rlpop()
    {
        $redis = new Redis();
        $redis->connect('127.0.0.1',6379);
        $value = $redis->lpop('names1');
        if($value){
            echo "出队的值".$value;//die;
        }else{
            echo "出队完成";
        }
    }



    public function qrcodeimg($url="",$level=3,$size=4)
    {
       /* $res = Db::connect();
          dump($res);die;*/
        Vendor('phpqrcode.phpqrcode');
        $errorCorrectionLevel =intval($level) ;//容错级别
        $matrixPointSize = intval($size);//生成图片大小
        //生成二维码图片
        $object = new \QRcode();
        //var_dump($object);die;
       $new =  $object->png($url="https://www.baidu.com/", false, $errorCorrectionLevel, $matrixPointSize, 2);
      echo $new;
      exit();
    }
  


}